.section .rodata, "a", "progbits"
	.align 4
	.section .text, "ax", "progbits"
	.align 4
	.section .rodata
	.align 4
$cosdata:
	.dword 0x3fe45f306dc9c883
	.dword 0x42c8000000000000
	.dword 0x3ff921fb54400000
	.dword 0x3dd0b4611a626331
	.dword 0x3dd0b4611a800000
	.dword 0xbbdd9cceba3f91f2
	.dword 0xc028000296da263e
	.dword 0xc033fffea64e84c2
	.dword 0xbfa555530821c360
	.dword 0xbf811112380f37fb
	.dword 0x40a0020000000000
	.dword 0x40a0000000000000
	.dword 0x3ff0000000000000
	.dword 0x3ff0000000000000
	.dword 0xbff0000000000000
	.dword 0xbff0000000000000
	.dword 0x3ff0000000000000
	.dword 0x3ff0000000000000
	.dword 0x0000000000000000
	.dword 0x0000000000000000
	.dword 0x3f8921d1fcdec784
	.dword 0x3c29878ebe836d9d
	.dword 0x3f992155f7a3667e
	.dword 0xbbfb1d63091a0130
	.dword 0x3fa2d865759455cd
	.dword 0x3c2686f65ba93ac0
	.dword 0x3fa91f65f10dd814
	.dword 0xbc2912bd0d569a90
	.dword 0x3faf656e79f820e0
	.dword 0xbc22e1ebe392bffe
	.dword 0x3fb2d52092ce19f6
	.dword 0xbc49a088a8bf6b2c
	.dword 0x3fb5f6d00a9aa419
	.dword 0xbc4f4022d03f6c9a
	.dword 0x3fb917a6bc29b42c
	.dword 0xbc3e2718d26ed688
	.dword 0x3fbc3785c79ec2d5
	.dword 0xbc24f39df133fb21
	.dword 0x3fbf564e56a9730e
	.dword 0x3c4a2704729ae56d
	.dword 0x3fc139f0cedaf577
	.dword 0xbc6523434d1b3cfa
	.dword 0x3fc2c8106e8e613a
	.dword 0x3c513000a89a11e0
	.dword 0x3fc45576b1293e5a
	.dword 0xbc5285a24119f7b1
	.dword 0x3fc5e214448b3fc6
	.dword 0x3c6531ff779ddac6
	.dword 0x3fc76dd9de50bf31
	.dword 0x3c61d5eeec501b2f
	.dword 0x3fc8f8b83c69a60b
	.dword 0xbc626d19b9ff8d82
	.dword 0x3fca82a025b00451
	.dword 0xbc687905ffd084ad
	.dword 0x3fcc0b826a7e4f63
	.dword 0xbc1af1439e521935
	.dword 0x3fcd934fe5454311
	.dword 0x3c675b92277107ad
	.dword 0x3fcf19f97b215f1b
	.dword 0xbc642deef11da2c4
	.dword 0x3fd04fb80e37fdae
	.dword 0xbc0412cdb72583cc
	.dword 0x3fd111d262b1f677
	.dword 0x3c7824c20ab7aa9a
	.dword 0x3fd1d3443f4cdb3e
	.dword 0xbc6720d41c13519e
	.dword 0x3fd294062ed59f06
	.dword 0xbc75d28da2c4612d
	.dword 0x3fd35410c2e18152
	.dword 0xbc73cb002f96e062
	.dword 0x3fd4135c94176601
	.dword 0x3c70c97c4afa2518
	.dword 0x3fd4d1e24278e76a
	.dword 0x3c62417218792858
	.dword 0x3fd58f9a75ab1fdd
	.dword 0xbc1efdc0d58cf620
	.dword 0x3fd64c7ddd3f27c6
	.dword 0x3c510d2b4a664121
	.dword 0x3fd7088530fa459f
	.dword 0xbc744b19e0864c5d
	.dword 0x3fd7c3a9311dcce7
	.dword 0x3c19a3f21ef3e8d9
	.dword 0x3fd87de2a6aea963
	.dword 0xbc672cedd3d5a610
	.dword 0x3fd9372a63bc93d7
	.dword 0x3c6684319e5ad5b1
	.dword 0x3fd9ef7943a8ed8a
	.dword 0x3c66da81290bdbab
	.dword 0x3fdaa6c82b6d3fca
	.dword 0xbc7d5f106ee5ccf7
	.dword 0x3fdb5d1009e15cc0
	.dword 0x3c65b362cb974183
	.dword 0x3fdc1249d8011ee7
	.dword 0xbc7813aabb515206
	.dword 0x3fdcc66e9931c45e
	.dword 0x3c56850e59c37f8f
	.dword 0x3fdd79775b86e389
	.dword 0x3c7550ec87bc0575
	.dword 0x3fde2b5d3806f63b
	.dword 0x3c5e0d891d3c6841
	.dword 0x3fdedc1952ef78d6
	.dword 0xbc7dd0f7c33edee6
	.dword 0x3fdf8ba4dbf89aba
	.dword 0xbc32ec1fc1b776b8
	.dword 0x3fe01cfc874c3eb7
	.dword 0xbc734a35e7c2368c
	.dword 0x3fe073879922ffee
	.dword 0xbc8a5a014347406c
	.dword 0x3fe0c9704d5d898f
	.dword 0xbc88d3d7de6ee9b2
	.dword 0x3fe11eb3541b4b23
	.dword 0xbc8ef23b69abe4f1
	.dword 0x3fe1734d63dedb49
	.dword 0xbc87eef2ccc50575
	.dword 0x3fe1c73b39ae68c8
	.dword 0x3c8b25dd267f6600
	.dword 0x3fe21a799933eb59
	.dword 0xbc83a7b177c68fb2
	.dword 0x3fe26d054cdd12df
	.dword 0xbc85da743ef3770c
	.dword 0x3fe2bedb25faf3ea
	.dword 0xbc514981c796ee46
	.dword 0x3fe30ff7fce17035
	.dword 0xbc6efcc626f74a6f
	.dword 0x3fe36058b10659f3
	.dword 0xbc81fcb3a35857e7
	.dword 0x3fe3affa292050b9
	.dword 0x3c7e3e25e3954964
	.dword 0x3fe3fed9534556d4
	.dword 0x3c836916608c5061
	.dword 0x3fe44cf325091dd6
	.dword 0x3c68076a2cfdc6b3
	.dword 0x3fe49a449b9b0939
	.dword 0xbc827ee16d719b94
	.dword 0x3fe4e6cabbe3e5e9
	.dword 0x3c63c293edceb327
	.dword 0x3fe5328292a35596
	.dword 0xbc7a12eb89da0257
	.dword 0x3fe57d69348ceca0
	.dword 0xbc875720992bfbb2
	.dword 0x3fe5c77bbe65018c
	.dword 0x3c8069ea9c0bc32a
	.dword 0x3fe610b7551d2cdf
	.dword 0xbc7251b352ff2a37
	.dword 0x3fe6591925f0783d
	.dword 0x3c8c3d64fbf5de23
	.dword 0x3fe6a09e667f3bcd
	.dword 0xbc8bdd3413b26456
	.dword 0x3fe6e74454eaa8af
	.dword 0xbc8dbc03c84e226e
	.dword 0x3fe72d0837efff96
	.dword 0x3c80d4ef0f1d915c
	.dword 0x3fe771e75f037261
	.dword 0x3c75cfce8d84068f
	.dword 0x3fe7b5df226aafaf
	.dword 0xbc70f537acdf0ad7
	.dword 0x3fe7f8ece3571771
	.dword 0xbc89c8d8ce93c917
	.dword 0x3fe83b0e0bff976e
	.dword 0xbc76f420f8ea3475
	.dword 0x3fe87c400fba2ebf
	.dword 0xbc82dabc0c3f64cd
	.dword 0x3fe8bc806b151741
	.dword 0xbc82c5e12ed1336d
	.dword 0x3fe8fbcca3ef940d
	.dword 0xbc66dfa99c86f2f1
	.dword 0x3fe93a22499263fb
	.dword 0x3c83d419a920df0b
	.dword 0x3fe9777ef4c7d742
	.dword 0xbc815479a240665e
	.dword 0x3fe9b3e047f38741
	.dword 0xbc830ee286712474
	.dword 0x3fe9ef43ef29af94
	.dword 0x3c7b1dfcb60445c2
	.dword 0x3fea29a7a0462782
	.dword 0xbc7128bb015df175
	.dword 0x3fea63091b02fae2
	.dword 0xbc7e911152248d10
	.dword 0x3fea9b66290ea1a3
	.dword 0x3c39f630e8b6dac8
	.dword 0x3fead2bc9e21d511
	.dword 0xbc847fbe07bea548
	.dword 0x3feb090a58150200
	.dword 0xbc8926da300ffcce
	.dword 0x3feb3e4d3ef55712
	.dword 0xbc8eb6b8bf11a493
	.dword 0x3feb728345196e3e
	.dword 0xbc8bc69f324e6d61
	.dword 0x3feba5aa673590d2
	.dword 0x3c87ea4e370753b6
	.dword 0x3febd7c0ac6f952a
	.dword 0xbc8825a732ac700a
	.dword 0x3fec08c426725549
	.dword 0x3c5b157fd80e2946
	.dword 0x3fec38b2f180bdb1
	.dword 0xbc76e0b1757c8d07
	.dword 0x3fec678b3488739b
	.dword 0x3c6d86cac7c5ff5b
	.dword 0x3fec954b213411f5
	.dword 0xbc52fb761e946603
	.dword 0x3fecc1f0f3fcfc5c
	.dword 0x3c7e57613b68f6ab
	.dword 0x3feced7af43cc773
	.dword 0xbc5e7b6bb5ab58ae
	.dword 0x3fed17e7743e35dc
	.dword 0xbc5101da3540130a
	.dword 0x3fed4134d14dc93a
	.dword 0xbc84ef5295d25af2
	.dword 0x3fed696173c9e68b
	.dword 0xbc7e8c61c6393d55
	.dword 0x3fed906bcf328d46
	.dword 0x3c7457e610231ac2
	.dword 0x3fedb6526238a09b
	.dword 0xbc7adee7eae69460
	.dword 0x3feddb13b6ccc23c
	.dword 0x3c883c37c6107db3
	.dword 0x3fedfeae622dbe2b
	.dword 0xbc8514ea88425567
	.dword 0x3fee212104f686e5
	.dword 0xbc8014c76c126527
	.dword 0x3fee426a4b2bc17e
	.dword 0x3c8a873889744882
	.dword 0x3fee6288ec48e112
	.dword 0xbc616b56f2847754
	.dword 0x3fee817bab4cd10d
	.dword 0xbc7d0afe686b5e0a
	.dword 0x3fee9f4156c62dda
	.dword 0x3c8760b1e2e3f81e
	.dword 0x3feebbd8c8df0b74
	.dword 0x3c7c6c8c615e7277
	.dword 0x3feed740e7684963
	.dword 0x3c7e82c791f59cc2
	.dword 0x3feef178a3e473c2
	.dword 0x3c86310a67fe774f
	.dword 0x3fef0a7efb9230d7
	.dword 0x3c752c7adc6b4989
	.dword 0x3fef2252f7763ada
	.dword 0xbc820cb81c8d94ab
	.dword 0x3fef38f3ac64e589
	.dword 0xbc7d7bafb51f72e6
	.dword 0x3fef4e603b0b2f2d
	.dword 0xbc78ee01e695ac05
	.dword 0x3fef6297cff75cb0
	.dword 0x3c7562172a361fd3
	.dword 0x3fef7599a3a12077
	.dword 0x3c884f31d743195c
	.dword 0x3fef8764fa714ba9
	.dword 0x3c7ab256778ffcb6
	.dword 0x3fef97f924c9099b
	.dword 0xbc8e2ae0eea5963b
	.dword 0x3fefa7557f08a517
	.dword 0xbc87a0a8ca13571f
	.dword 0x3fefb5797195d741
	.dword 0x3c71bfac7397cc08
	.dword 0x3fefc26470e19fd3
	.dword 0x3c81ec8668ecacee
	.dword 0x3fefce15fd6da67b
	.dword 0xbc75dd6f830d4c09
	.dword 0x3fefd88da3d12526
	.dword 0xbc887df6378811c7
	.dword 0x3fefe1cafcbd5b09
	.dword 0x3c6a23e3202a884e
	.dword 0x3fefe9cdad01883a
	.dword 0x3c6521ecd0c67e35
	.dword 0x3feff095658e71ad
	.dword 0x3c801a8ce18a4b9e
	.dword 0x3feff621e3796d7e
	.dword 0xbc6c57bc2e24aa15
	.dword 0x3feffa72effef75d
	.dword 0xbc88b4cdcdb25956
	.dword 0x3feffd886084cd0d
	.dword 0xbc81354d4556e4cb
	.dword 0x3fefff62169b92db
	.dword 0x3c85dda3c81fbd0d
	.dword 0x3ff0000000000000
	.dword 0x0000000000000000
	.dword 0x0000000000000000
	.dword 0xbf90000000000000
	.dword 0x3f90000000000000
	.dword 0xbf8f8fb56a46c019
	.dword 0x3f98000000000000
	.dword 0xbf8f1f6f28cf5c51
	.dword 0x3fa0000000000000
	.dword 0xbf8eaf318fb0f6d8
	.dword 0x3fa8000000000000
	.dword 0xbf8e3f00f2ad3faf
	.dword 0x3fb0000000000000
	.dword 0xbf8dcee1a505bfa4
	.dword 0x3fb2000000000000
	.dword 0xbf8d5ed7f951284f
	.dword 0x3fb6000000000000
	.dword 0xbf8ceee84150aa99
	.dword 0x3fba000000000000
	.dword 0xbf8c7f16cdc55584
	.dword 0x3fbc000000000000
	.dword 0xbf8c0f67ee457ed2
	.dword 0x3fc0000000000000
	.dword 0xbf8b9fdff112372f
	.dword 0x3fc1000000000000
	.dword 0xbf8b308322eccb84
	.dword 0x3fc3000000000000
	.dword 0xbf8ac155ceec5516
	.dword 0x3fc4000000000000
	.dword 0xbf8a525c3e535a11
	.dword 0x3fc6000000000000
	.dword 0xbf89e39ab865802b
	.dword 0x3fc7000000000000
	.dword 0xbf897515823d52ec
	.dword 0x3fc9000000000000
	.dword 0xbf8906d0dea21f56
	.dword 0x3fcb000000000000
	.dword 0xbf8898d10ddde676
	.dword 0x3fcc000000000000
	.dword 0xbf882b1a4d936891
	.dword 0x3fce000000000000
	.dword 0xbf87bdb0d8944a73
	.dword 0x3fcf000000000000
	.dword 0xbf875098e6b7569a
	.dword 0x3fd0800000000000
	.dword 0xbf86e3d6acaedbbd
	.dword 0x3fd1000000000000
	.dword 0xbf86776e5bdf2a61
	.dword 0x3fd2000000000000
	.dword 0xbf860b6422353304
	.dword 0x3fd2800000000000
	.dword 0xbf859fbc29fd4681
	.dword 0x3fd3800000000000
	.dword 0xbf85347a99b9fa46
	.dword 0x3fd4000000000000
	.dword 0xbf84c9a393fb31e0
	.dword 0x3fd5000000000000
	.dword 0xbf845f3b37354f8b
	.dword 0x3fd5800000000000
	.dword 0xbf83f5459d988d48
	.dword 0x3fd6800000000000
	.dword 0xbf838bc6dce88006
	.dword 0x3fd7000000000000
	.dword 0xbf8322c30653c683
	.dword 0x3fd8000000000000
	.dword 0xbf82ba3e264be55c
	.dword 0x3fd8800000000000
	.dword 0xbf82523c445d51e3
	.dword 0x3fd9000000000000
	.dword 0xbf81eac16307ad4a
	.dword 0x3fda000000000000
	.dword 0xbf8183d17f96319b
	.dword 0x3fda800000000000
	.dword 0xbf811d7091f8521b
	.dword 0x3fdb800000000000
	.dword 0xbf80b7a28c9a9082
	.dword 0x3fdc000000000000
	.dword 0xbf80526b5c3f88a5
	.dword 0x3fdd000000000000
	.dword 0xbf7fdb9dcfb267fa
	.dword 0x3fdd800000000000
	.dword 0xbf7f13a220c4cd29
	.dword 0x3fde000000000000
	.dword 0xbf7e4ceb61710db1
	.dword 0x3fdf000000000000
	.dword 0xbf7d87813aeb037a
	.dword 0x3fdf800000000000
	.dword 0xbf7cc36b4993f973
	.dword 0x3fe0000000000000
	.dword 0xbf7c00b11caf8e10
	.dword 0x3fe0800000000000
	.dword 0xbf7b3f5a3619173b
	.dword 0x3fe0c00000000000
	.dword 0xbf7a7f6e09f98a9d
	.dword 0x3fe1000000000000
	.dword 0xbf79c0f3fe7ded10
	.dword 0x3fe1800000000000
	.dword 0xbf7903f36b8e4c14
	.dword 0x3fe1c00000000000
	.dword 0xbf7848739a854423
	.dword 0x3fe2000000000000
	.dword 0xbf778e7bc5e81697
	.dword 0x3fe2800000000000
	.dword 0xbf76d613191f5201
	.dword 0x3fe2c00000000000
	.dword 0xbf761f40b0300f9d
	.dword 0x3fe3000000000000
	.dword 0xbf756a0b9775c8b3
	.dword 0x3fe3800000000000
	.dword 0xbf74b67acb5cc67e
	.dword 0x3fe3c00000000000
	.dword 0xbf740495381d2f62
	.dword 0x3fe4000000000000
	.dword 0xbf735461b976b408
	.dword 0x3fe4400000000000
	.dword 0xbf72a5e71a6cdf08
	.dword 0x3fe4800000000000
	.dword 0xbf71f92c150409c5
	.dword 0x3fe5000000000000
	.dword 0xbf714e3751fef8fd
	.dword 0x3fe5400000000000
	.dword 0xbf70a50f689d23b1
	.dword 0x3fe5800000000000
	.dword 0xbf6ffb75bcb34dc6
	.dword 0x3fe5c00000000000
	.dword 0xbf6eb0804d55d15a
	.dword 0x3fe6000000000000
	.dword 0xbf6d694b4585da58
	.dword 0x3fe6400000000000
	.dword 0xbf6c25e342a0bf6f
	.dword 0x3fe6c00000000000
	.dword 0xbf6ae654bc80a599
	.dword 0x3fe7000000000000
	.dword 0xbf69aaac05017230
	.dword 0x3fe7400000000000
	.dword 0xbf6872f5478733fc
	.dword 0x3fe7800000000000
	.dword 0xbf673f3c888607ea
	.dword 0x3fe7c00000000000
	.dword 0xbf660f8da50b7e06
	.dword 0x3fe8000000000000
	.dword 0xbf64e3f452498363
	.dword 0x3fe8400000000000
	.dword 0xbf63bc7c1d22d54d
	.dword 0x3fe8800000000000
	.dword 0xbf62993069b90265
	.dword 0x3fe8c00000000000
	.dword 0xbf617a1c72fbfdea
	.dword 0x3fe9000000000000
	.dword 0xbf605f4b4a3b4998
	.dword 0x3fe9400000000000
	.dword 0xbf5e918fad7174b0
	.dword 0x3fe9800000000000
	.dword 0xbf5c6d39aa79b7fa
	.dword 0x3fe9c00000000000
	.dword 0xbf5a51a9af59f070
	.dword 0x3fea000000000000
	.dword 0xbf583ef489458998
	.dword 0x3fea400000000000
	.dword 0xbf56352eae0b7a24
	.dword 0x3fea800000000000
	.dword 0xbf54346c3b4c5583
	.dword 0x3fea800000000000
	.dword 0xbf523cc0f5b3c3b7
	.dword 0x3feac00000000000
	.dword 0xbf504e404835672b
	.dword 0x3feb000000000000
	.dword 0xbf4cd1fa869a6fea
	.dword 0x3feb400000000000
	.dword 0xbf491a153886b80a
	.dword 0x3feb800000000000
	.dword 0xbf4574f558e706ce
	.dword 0x3febc00000000000
	.dword 0xbf41e2bee12f9f92
	.dword 0x3febc00000000000
	.dword 0xbf3cc72a205d38dc
	.dword 0x3fec000000000000
	.dword 0xbf35ef34d160279e
	.dword 0x3fec000000000000
	.dword 0xbf2e7bc2c0a5f66e
	.dword 0x3fec800000000000
	.dword 0xbf2166e3b5b19411
	.dword 0x3fec800000000000
	.dword 0xbf02813676073d80
	.dword 0x3fed000000000000
	.dword 0x3f0f5e05c3b1c100
	.dword 0x3fed000000000000
	.dword 0x3f24000e681a7418
	.dword 0x3fed000000000000
	.dword 0x3f2fd8e148c62d84
	.dword 0x3fed800000000000
	.dword 0x3f35b0c293454289
	.dword 0x3fed800000000000
	.dword 0x3f3b4cc41630a9d7
	.dword 0x3fed800000000000
	.dword 0x3f40601ee841b65c
	.dword 0x3fed800000000000
	.dword 0x3f43057cfacfa1a6
	.dword 0x3fee000000000000
	.dword 0x3f459662257e3b34
	.dword 0x3fee000000000000
	.dword 0x3f4812b51516abdc
	.dword 0x3fee000000000000
	.dword 0x3f4a7a5d416912dc
	.dword 0x3fee800000000000
	.dword 0x3f4ccd42ee3ea401
	.dword 0x3fee800000000000
	.dword 0x3f4f0b4f2c43e8c3
	.dword 0x3fee800000000000
	.dword 0x3f509a35ecf58d97
	.dword 0x3fee800000000000
	.dword 0x3f51a441d22348fc
	.dword 0x3fee800000000000
	.dword 0x3f52a3c103ed9aa6
	.dword 0x3fef000000000000
	.dword 0x3f5398a9a8b57a13
	.dword 0x3fef000000000000
	.dword 0x3f5482f24f5b9947
	.dword 0x3fef000000000000
	.dword 0x3f556291ef9d9485
	.dword 0x3fef000000000000
	.dword 0x3f56377fea6f171c
	.dword 0x3fef000000000000
	.dword 0x3f5701b40a4ef1d3
	.dword 0x3fef000000000000
	.dword 0x3f57c12683981fae
	.dword 0x3fef000000000000
	.dword 0x3f5875cff4ceb5e3
	.dword 0x3fef000000000000
	.dword 0x3f591fa966e8bc15
	.dword 0x3ff0000000000000
	.dword 0x3f59beac4d92ea02
	.dword 0x3ff0000000000000
	.dword 0x3f5a52d2877147f7
	.dword 0x3ff0000000000000
	.dword 0x3f5adc165e5baf91
	.dword 0x3ff0000000000000
	.dword 0x3f5b5a7287962a79
	.dword 0x3ff0000000000000
	.dword 0x3f5bcde224052ced
	.dword 0x3ff0000000000000
	.dword 0x3f5c3660c05daa07
	.dword 0x3ff0000000000000
	.dword 0x3f5c93ea5550ffff
	.dword 0x3ff0000000000000
	.dword 0x3f5ce67b47b4ba9c
	.dword 0x3ff0000000000000
	.dword 0x3f5d2e1068a62a67
	.dword 0x3ff0000000000000
	.dword 0x3f5d6aa6f5a9cf22
	.dword 0x3ff0000000000000
	.dword 0x3f5d9c3c98c69469
	.dword 0x3ff0000000000000
	.dword 0x3f5dc2cf689cdf61
	.dword 0x3ff0000000000000
	.dword 0x3f5dde5de8796c94
	.dword 0x3ff0000000000000
	.dword 0x3f5deee70863fd42
	.dword 0x3ff0000000000000
	.dword 0x3f5df46a2529d391
	.dword 0x43f0000000000000
	.dword 0x3bf0000000000000
	.dword 0x3fe921fb58000000
	.dword 0xbe3dde973dcb3b3a
	.dword 0x0000000000000000
	.dword 0x0000000000000000
	.dword 0x0028be60db939105
	.dword 0x4a7f09d5f47d4d37
	.dword 0x7036d8a5664f10e4
	.dword 0x107f9458eaf7aef1
	.dword 0x586dc91b8e909374
	.dword 0xb801924bba827464
	.dword 0x873f877ac72c4a69
	.dword 0xcfba208d7d4baed1
	.dword 0x213a671c09ad17df
	.dword 0x904e64758e60d4ce
	.dword 0x7d272117e2ef7e4a
	.dword 0x0ec7fe25fff78166
	.dword 0x03fbcbc462d6829b
	.dword 0x47db4d9fb3c9f2c2
	.dword 0x6dd3d18fd9a797fa
	.dword 0x8b5d49eeb1faf97c
	.dword 0x5ecf41ce7de294a4
	.dword 0xba9afed7ec47e357
	.dword 0x421580cc11bf1eda
	.dword 0xeafc33ef0826bd0d
	.dword 0x876a78e45857b986
	.dword 0xc219666157c5281a
	.dword 0x10237ff620135cc9
	.dword 0xcc41818555b29cea
	.dword 0x3258389ef0231ad1
	.dword 0xf10670d9f3773a02
	.dword 0x4aa0d6711da2e587
	.dword 0x29b76bd13455c641
	.dword 0x4fa97fc1c14fdf8c
	.dword 0xfa0cb0b793e60c9f
	.section .text
	.align 4
	.globl _rv_cos
_rv_cos:
	fmv.x.d a0,fa0
	li t0,-1
	li t1,7971
	lui a1,%hi($cosdata)
	addi a1,a1,%lo($cosdata)
	srli t0,t0,0x1
	slli t1,t1,0x31
	li t3,341
	slli t3,t3,0x31
	addi sp,sp,-208
	li a7,2048
	and a0,a0,t0
	sd ra,0(sp)
	fld fa7,0(a1)
	sub t2,a0,t1
	fld fs1,8(a1)
	addi a3,a1,144
	sltu t2,t2,t3
	fld fs2,32(a1)
	fld fs4,16(a1)
	addi a6,a1,152
	beqz t2,TZ1
	fld fa2,24(a1)
	fld ft8,72(a1)
	fld fs7,40(a1)
	fld fs8,64(a1)
	fmadd.d ft0,fa0,fa7,fs1
	fld fa7,56(a1)
	fmv.x.d t4,ft0
	fsub.d ft0,ft0,fs1
	fld fs1,48(a1)
	andi t5,t4,0x7f
	andi t6,t4,0x80
	srai t4,t4,0x4
	fmul.d fs2,fs2,ft0
	slli t5,t5,0x4
	andi t4,t4,0x18
	sub a7,a7,t5
	mv a2,t5
	fneg.d ft3,fs4
	fmadd.d fa1,ft3,ft0,fa0
	add a5,a1,t4
	add t4,a1,t4
	beqz t6,TYPH_1
	mv a2,a7
	j TYPH_2
TYPH_1:	mv a2,a2
TYPH_2:	nop
	fld fs5,96(a5)
	beqz t6,TYPH_3
	mv a7,t5
	j TYPH_4
TYPH_3:	mv a7,a7
TYPH_4:	nop
	fld fa5,104(t4)
	fneg.d ft3,fa2
	fmadd.d fs4,ft3,ft0,fa1
	fmul.d ft0,fs7,ft0
	fsub.d fs6,fa0,fs2
	add a4,a3,a2
	add a3,a3,a7
	add s7,a6,a2
	add a2,a1,a2
	fld fs3,0(a4)
	fld ft9,0(a3)
	add a7,a6,a7
	fld fa3,0(s7)
	li a4,2208
	add a4,a2,a4
	fld ft11,0(a4)
	fld fs9,0(a7)
	fsub.d fs6,fa0,fs6
	fmul.d fs3,fs3,fs5
	fmul.d ft9,ft9,fa5
	fmul.d fa3,fa3,fs5
	fsub.d fa4,fa1,fs6
	fmul.d fa1,ft11,fs5
	fmul.d ft8,ft8,fs3
	fsub.d fs2,fs2,fs6
	fmul.d fs8,fs8,ft9
	fmul.d fs10,fa1,fa4
	fsub.d fa1,fs3,fa1
	fmul.d ft10,fs9,fa5
	fmul.d ft8,ft8,fs4
	fadd.d ft0,ft0,fs2
	fneg.d ft3,fs3
	fmadd.d fa6,ft3,fa4,ft9
	fneg.d ft3,fa3
	fmadd.d fa3,ft3,fs4,ft10
	fmul.d fs4,fs4,fs4
	fmul.d fa1,fa1,fa4
	fsub.d ft9,ft9,fa6
	fmadd.d ft0,fs3,ft0,fa3
	fadd.d fa7,fa7,fs4
	fmul.d ft8,ft8,fs4
	fsub.d ft9,ft9,fs10
	fmul.d fs8,fs8,fs4
	fadd.d fs1,fs1,fs4
	fmul.d fa7,ft8,fa7
	fsub.d fa1,ft9,fa1
	fmsub.d fa7,fs8,fs1,fa7
	fadd.d ft0,fa1,ft0
	fsub.d fa7,ft0,fa7
	fadd.d fa0,fa6,fa7
	addi sp,sp,208
	ret
	.align 4
TZ1:
	sub t1,a0,t1
	sltz t1,t1
	ld ra,0(sp)
	fld fa7,96(a1)
	beqz t1,TZ2
	fmv.d fa0,fa7
	addi sp,sp,208
	ret
	.align 4
TZ2:
	fmv.x.d s9,fa0
	li s8,2047
	li a4,-1
	fmv.d fa7,fa0
	slli s8,s8,0x34
	srli a4,a4,0xc
	and a0,a0,s8
	and s10,s9,s8
	and s9,s9,a4
	xor a0,a0,s8
	ld ra,0(sp)
	sub s8,s10,s8
	seqz s8,s8
	seqz s9,s9
	bnez a0,TZ3
	and s8,s8,s9
	not s8,s8
	.align 4
	andi s8,s8,0x1
	beqz s8,TZ4
	.align 4
	fmv.d fa0,fa7
	addi sp,sp,208
	ret
	.align 4
TZ4:
	li s11,1
	addi a1,sp,24
	sll s11,s11,63
	li a4,17666
	add s11,s11,a4
	sd s11,24(sp)
	nop
	ld ra,0(sp)
	fld fa0,56(sp)
	addi sp,sp,208
	ret
	.align 4
TZ3:
	li a0,0x7
	fmv.d fa7,fa0
	li a6,2048
	fmv.x.d t2,fa7
	li t3,4095
	li t5,2047
	slli t3,t3,0x34
	li t4,0x1
	addi sp,sp,-48
	slli t4,t4,0x34
	sd s1,8(sp)
	and t3,t2,t3
	sd s2,16(sp)
	sd s3,24(sp)
	xor t2,t2,t3
	srli t3,t3,0x34
	sd s4,32(sp)
	and t3,t3,t5
	or t2,t2,t4
	add t3,a0,t3
	addi t3,t3,-946
	addi sp,sp,48
	li a4,4304
	add a7,a1,a4
	srai t6,t3,0x6
	andi t3,t3,0x3f
	sltu t5,zero,t3
	slli t6,t6,0x3
	add s9,t6,a7
	ld t4,16(s9)
	ld a7,0(s9)
	addi s11,s9,24
	ld s7,8(s9)
	mv s9,t4
	li t4,0x40
	beqz t3,TRIG_RDX_TZ3
	sll a7,a7,t3
	sub t6,t4,t3
	srl s8,s7,t6
	sll s7,s7,t3
	srl s10,s9,t6
	or a7,a7,s8
	or s7,s7,s10
TRIG_RDX_TZ3:
	mul a7,t2,a7
	li s1,0x1
	xor t5,t5,0x1
	mulhu s8,t2,s7
	slli s1,s1,0x2f
	mul s7,t2,s7
	add a7,a7,s8
	li s8,0x0
	slli s10,a7,0x9
	srai s10,s10,0x9
	.align 4
TRIG_RDX_TZ6:
	add s3,s10,s1
	sll s4,s9,t3
	li a4,0xFFFF000000000000
	and s3,s3,a4
	bnez s3,TRIG_RDX_TZ4
	ld s3,0(s11)
	mv s2,s9
	addi s11,s11,8
	mv s9,s3
	srl s3,s3,t6
	or s3,s4,s3
	beqz t5,TYPH_5
	mv s2,s2
	j TYPH_6
TYPH_5:	mv s2,s3
TYPH_6:	nop
	sltu s3,s7,0
	mulhu s4,s2,t2
	mul t2,s2,s2
	add s7,s7,s4
	sltu s4,s7,s4
	add s3,s3,s4
	add s10,s10,s3
TRIG_RDX_TZ4:
	srai s4,s7,0x3f
	xor s4,s10,s4
	bnez s4,TRIG_RDX_TZ5
	mv s10,s7
	mv s7,s2
	addi s8,s8,-64
	j TRIG_RDX_TZ6
	.align 4
TRIG_RDX_TZ5:
	srai t3,s10,0x3f
	sub s3,zero,s8
	li t5,-1
	li t6,0x1
	xor t3,s10,t3
	li a4,0x3f
	sub t2,s3,a4
	sltz t2,t2
	srli t5,t5,0xa
	li s9,2047
	fmv.d.x ft0,t3
	beqz t2,TYPH_7
	mv s3,s3
	j TYPH_8
TYPH_7:	li s3,0x3f
TYPH_8:	nop
	sra s3,s10,s3
	sub s3,s3,a7
	fmv.x.d a4,ft0
	fcvt.d.l ft0,a4
	and t5,s3,t5
	add t5,a7,t5
	srai t5,t5,0x2f
	beqz t3,TRIG_RDX_TZ7
	fmv.x.d s1,ft0
	srai s1,s1,0x34
	and s1,s1,s9
	addi t6,s1,-1021
TRIG_RDX_TZ7:
	sub t4,t4,t6
	srl s11,s7,t6
	srl t6,s2,t6
	beqz t4,TRIG_RDX_TZ8
	sll s7,s7,t4
	sub s8,s8,t4
	sll s10,s10,t4
	or s7,s7,t6
	or s10,s10,s11
TRIG_RDX_TZ8:
	fmv.d.x fs2,s7
	sub a0,s8,a0
	addi a0,a0,969
	blt s7,zero,TRIG_RDX_TZ9
	fmv.x.d a4,fs2
	fcvt.d.l fs1,a4
	j TRIG_RDX_TZ11
	.align 4
TRIG_RDX_TZ9:
	fmv.x.d a2,fs2
	li a4,0xFFF0000000000000
	and a2,a2,a4
	fmv.d.x fs3,a2
	fmv.x.d a2,fs2
	li t6,0x000FFFFFFFFFFFFF
	and a2,a2,t6
	fmv.d.x fs2,a2
	li a4,4272
	add a4,a1,a4
	fld fs1,0(a4)
	fmv.x.d a4,fs3
	fcvt.d.l fs3,a4
	fmv.x.d a4,fs2
	fcvt.d.l fs2,a4
	fadd.d fs3,fs1,fs3
	fadd.d fs1,fs2,fs3
TRIG_RDX_TZ11:
	slli a0,a0,0x34
	li a4,131072
	sext.w s3,a4
	fmv.d.x fs6,a0
	li a0,-1
	li a4,4288
	add a4,a1,a4
	fld ft0,0(a4)
	addi s3,s3,-1
	srli a0,a0,0x1b
	li a4,4296
	add a4,a1,a4
	fld fs5,0(a4)
	li a4,4280
	add a4,a1,a4
	fld fs4,0(a4)
	and a0,s10,a0
	fmv.d.x fs3,a0
	xor a0,s10,a0
	fmul.d ft0,fs6,ft0
	fmul.d fs1,fs4,fs1
	fmul.d fs5,fs6,fs5
	fmv.x.d a4,fs3
	fcvt.d.l fs2,a4
	fmv.d.x fs3,a0
	fadd.d fs4,ft0,fs5
	fmv.x.d a4,fs3
	fcvt.d.l fs3,a4
	fadd.d fs1,fs2,fs1
	fmul.d fs5,fs3,fs5
	fmadd.d fs1,fs1,fs4,fs5
	fmul.d ft0,fs3,ft0
	fadd.d fa1,ft0,fs1
	fsub.d ft0,fa1,ft0
	fsub.d ft0,ft0,fs1
	li a4,0
	fmv.d.x ft3,a4
	flt.d a4,fa7,ft3
	beqz a4,TRIG_RDX_TZ10
	sub t5,s3,t5
	fneg.d fa1,fa1
	fneg.d ft0,ft0
TRIG_RDX_TZ10:
	mv a0,t5
	addi sp,sp,-48
	ld s1,8(sp)
	ld s2,16(sp)
	ld s3,24(sp)
	ld s4,32(sp)
	addi sp,sp,48
	fld fa2,80(a1)
	addi t1,a1,144
	addi a0,a0,128
	srai a0,a0,0x8
	fld fa3,88(a1)
	addi t4,a1,152
	fld fs10,72(a1)
	andi a3,a0,0x7f
	srai a5,a0,0x4
	andi a0,a0,0x80
	fld fs1,64(a1)
	slli a3,a3,0x4
	andi a5,a5,0x18
	fld fs3,56(a1)
	sub a6,a6,a3
	mv t0,a3
	add t3,a1,a5
	fmul.d fa2,fa1,fa2
	beqz a0,TYPH_9
	mv t0,a6
	j TYPH_10
TYPH_9:	mv t0,t0
TYPH_10:	nop
	fld fa4,96(t3)
	beqz a0,TYPH_11
	mv a6,a3
	j TYPH_12
TYPH_11:	mv a6,a6
TYPH_12:	nop
	add t2,t1,t0
	fld fa5,0(t2)
	fneg.d ft3,fa1
	fmadd.d fs8,ft3,fa3,fa2
	add t1,t1,a6
	add a5,a1,a5
	fld ft9,104(a5)
	fld ft11,0(t1)
	add t5,a1,t0
	add t0,t4,t0
	fld fs7,0(t0)
	li a4,2208
	add a4,t5,a4
	fld ft10,0(a4)
	add t4,t4,a6
	fmul.d fs2,fa1,fa1
	fld fa0,0(t4)
	fld fs4,48(a1)
	fmul.d fa5,fa5,fa4
	ld ra,0(sp)
	fmul.d ft11,ft11,ft9
	fmul.d ft8,fs7,fa4
	fadd.d fs3,fs3,fs2
	fmul.d ft10,ft10,fa4
	fneg.d ft3,fa5
	fmadd.d fs9,ft3,fs8,ft11
	fsub.d fa2,fs8,fa1
	fmul.d fs10,fs10,fa5
	fmul.d ft8,ft8,fa1
	fsub.d fa3,fa5,ft10
	fmul.d fs1,fs1,ft11
	fsub.d ft11,ft11,fs9
	fmul.d fa1,fs10,fa1
	fadd.d ft0,ft0,fa2
	fmsub.d fa0,fa0,ft9,ft8
	fmul.d fs1,fs1,fs2
	fmul.d fa1,fa1,fs2
	fadd.d fs2,fs4,fs2
	fmadd.d ft0,fa5,ft0,fa0
	fneg.d ft3,ft10
	fmadd.d fa7,ft3,fs8,ft11
	fmul.d fs3,fa1,fs3
	fneg.d ft3,fa3
	fmadd.d fa7,ft3,fs8,fa7
	fmsub.d fs1,fs1,fs2,fs3
	fadd.d fa7,fa7,ft0
	fsub.d fa7,fa7,fs1
	fadd.d fa0,fs9,fa7
	addi sp,sp,208
	ret
